#ifndef __CLIENT_FUNC_H__
#define __CLIENT_FUNC_H__

#include "head.h"

#define FILENAME "file" // 发送的文件的文件名
#define BUFFSIZE 1024

// 文件下载内容结构体（小火车）
typedef struct 
{
    int data_len; 
    char buf[1000]; 
} train_t;

// 数据传送结构体，带操作码
typedef struct 
{
    int data_len;
    int state; // 存放操作状态码
    char buf[100];
}train_state_t;

enum command {
    REGISTER,
    LOGIN,
    LS,
    CD,
    PWD,
    REMOVE,
    GETS,
    PUTS,
    TOKEN,
};

// tcp_conf
char tcp_ip[20];
char tcp_port[20];

int sfd;
int is_running;
int ret;
train_state_t t_s_data;
train_t t_data, r_data;


int tcp_client_init();
int start();

/********** GETS和PUTS使用函数 **********/
// 接收文件
int download_file(int remote_fd);
// 发送文件
int upload_file(int remote_fd, const char *file_name);
// 循环接收
int recv_n(int sfd, void* buf, int data_len);
// 循环发送
int send_n(int sfd, void* buf, int data_len);

/********** 命令处理函数 **********/
int do_register();
int do_login();
int do_cd();
int do_ls();
int do_puts();
int do_gets();
int do_remove();
int do_pwd();
int do_default();


#endif